As transistor and other component sizes become smaller and manufacturing techniques continue to improve, more functionality is being placed on single integrated circuits, or chips. The term system on a chip (SoC) generally refers to integrating all the functionality of a computer or other complex electronic system onto a single chip. A SoC may comprise one or more memories, processors, or input/output ports, all integrated into a single chip. One way of allowing various components of a SoC to communicate is to use an on-chip network, sometimes referred to as a network-on-chip. An on-chip network is intended to replace conventional ways of communicating between electronic components in a complex system, such as conventional bus and crossbar interconnections.
Ring networks may be an attractive option for on-chip networks because ring networks are of relatively low complexity. A node in a ring network may divide channel resources on a link into virtual channels. Virtual channels are traditionally used to bypass blocked traffic in a network thereby improving link utilization. However, in on-chip networks, in which buffering is limited, the throughput and link utilization may be drastically reduced if one or more of the network nodes are oversubscribed and its packet queues back up and consume a large fraction of the available buffers. Virtual channels may be divided into a number of different virtual channel classes with different priorities. The impact of an oversubscribed network node remains, however, even with the use of virtual classes because a flit available for transmission is typically allowed to reserve any available virtual channel without restriction.